]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
layout: Set high dpi scaling factor
authorAdel Gadllah <adel.gadllah@gmail.com>
Wed, 12 Feb 2014 16:40:01 +0000 (17:40 +0100)
committerAdel Gadllah <adel.gadllah@gmail.com>
Wed, 12 Feb 2014 21:53:37 +0000 (22:53 +0100)
Set the scaling factor when the dpi is above the hidpi threshold.

https://bugzilla.gnome.org/show_bug.cgi?id=705410

js/ui/layout.js

index 82d848a5a236a8e1494c5bc365a14cfb37e81981..4a4c94f1dd94d3b38b2cebc604537dfbf7e16c63 100644 (file)
@@ -31,6 +31,9 @@ const MESSAGE_TRAY_PRESSURE_TIMEOUT = 1000; // ms
 const HOT_CORNER_PRESSURE_THRESHOLD = 100; // pixels
 const HOT_CORNER_PRESSURE_TIMEOUT = 1000; // ms
 
+// We scale up when the dpi is higher then this (same value used by gsd)
+const HIGH_DPI_LIMIT = 192;
+
 function isPopupMetaWindow(actor) {
     switch(actor.meta_window.get_window_type()) {
     case Meta.WindowType.DROPDOWN_MENU:
@@ -486,8 +489,19 @@ const LayoutManager = new Lang.Class({
         return false;
     },
 
+    _updateScaling: function() {
+        let primary = this.monitors[this.primaryIndex];
+        let dpi_x = primary.width / (global.gdk_screen.get_monitor_width_mm(this.primaryIndex) / 25.4);
+        let dpi_y = primary.height / (global.gdk_screen.get_monitor_height_mm(this.primaryIndex) / 25.4);
+        if (dpi_x > HIGH_DPI_LIMIT && dpi_y > HIGH_DPI_LIMIT)
+            St.ThemeContext.get_for_stage(global.stage).scale_factor = 2;
+        else
+            St.ThemeContext.get_for_stage(global.stage).scale_factor = 1;
+    },
+
     _monitorsChanged: function() {
         this._updateMonitors();
+        this._updateScaling();
         this._updateBoxes();
         this._updateTrayBarrier();
         this._updateHotCorners();